package com.kc.business.mapper;

import com.kc.business.domain.BizMenu;
import com.kc.business.domain.vo.BizMenuVo;
import com.kc.common.core.dao.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * FileName: BizMenuMapper
 * Author:   TP
 * Date:     2020-10-30 09:03
 * Description: 菜单mapper
 */
public interface BizMenuMapper extends BaseMapper<BizMenu> {
    /**
     * 查询菜单列表
     *
     * @param vo 查询条件VO
     * @return 菜单列表
     */
    List<BizMenu> getList(BizMenuVo vo);

    /**
     * 获取所有可用菜单（不包含通用）
     *
     * @return 所有可用菜单
     */
    List<BizMenu> getActiveWithoutCommonMenus();

    /**
     * 获取所有分组菜单
     *
     * @return 分组菜单信息
     */
    List<BizMenu> getByGroupType(String type);

    /**
     * 根据菜单名称或App标识ID查询菜单信息
     *
     * @param menuName  菜单名称
     * @param appFlagId App标识ID
     * @return 菜单信息
     */
    BizMenu getByMenuNameOrAppFlagId(@Param("menuName") String menuName,
                                     @Param("appFlagId") String appFlagId);

    /**
     * 根据AppFlagId查询
     *
     * @param appFlagId AppFlagId
     * @return 菜单信息
     */
    BizMenu getByAppFlagId(String appFlagId);

    /**
     * 根据菜单名称获取菜单信息
     *
     * @param menuName 菜单名称
     * @return 菜单信息
     */
    BizMenu getByMenuName(String menuName);

    /**
     * 根据父菜单ID获取所有可用子菜单
     *
     * @param id 父菜单ID
     * @return 菜单信息
     */
    List<BizMenu> getActiveMenusByParentMenuId(Integer id);

    /**
     * 根据ID删除
     *
     * @param id 主键ID
     * @return
     */
    int deleteById(@Param("id") Integer id,
                   @Param("username") String username);
}